//package com.mi.soul.whale.common.service.file;
//
//import com.alibaba.fastjson.JSON;
//import com.github.tobato.fastdfs.domain.fdfs.StorePath;
//import com.github.tobato.fastdfs.service.FastFileStorageClient;
//import com.mi.rule.file.FileServerType;
//import com.mi.rule.util.EnvKit;
//import com.mi.rule.util.project.MiException;
//import com.mi.rule.util.project.SRS;
//import com.mi.soul.whale.common.util.ResMsg;
//import com.mi.soul.whale.mybatis.entity.FileInfo;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.io.FileUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.web.multipart.MultipartFile;
//
//import java.io.File;
//import java.util.ArrayList;
//
//@Slf4j
//@Service
//public class FileServiceImpl implements FileService {
//
//
//    @Override
//    public SRS uploadFile(MultipartFile[] files) throws Exception {
//        if (files == null || files.length == 0) {
//            return SRS.bySuccess();
//        }
//        String uploadPath = FileKit.uploadPath();
//
//        //获取文件上传路径
//        File dir = new File(uploadPath);
//        if (!dir.exists()) {
//            dir.mkdirs();
//        }
//
//        //      检查文件大小
//        for (MultipartFile file : files) {
//            if (file.getSize() > DictCache.longVal("upload_image_max_size", 52428800L)) {
//                throw new MiException(ResMsg.ERROR_IMAGE_FILE_MAX);
//            }
//        }
//
//        //    开始上传
//        ArrayList<FileInfo> listUpload = new ArrayList<>();
//        for (MultipartFile file : files) {
//            //原始文件名（有后缀）
//            String originalFilename = file.getOriginalFilename();
//            //文件后缀（没有点）
//            String suffix = FileKit.getSuffix(originalFilename);
//            String fileMd5 = FileKit.getFileMd5(file); //文件 MD5
//            String fileName = fileMd5 + "." + suffix;
//            String type = FileKit.getType(originalFilename);//文件类型
//            String url = AppKit.getProperty("server.servlet.context-path") + "/static/" + type + "/" + fileName;
//            String path = (uploadPath + SystemKit.sp + type + SystemKit.sp);
//
//            //上传文件
//            FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path, fileName));
//            //
//            FileInfo fileInfo = new FileInfo();
//            fileInfo.setId(nextId());
//            fileInfo.setName(originalFilename);
//            fileInfo.setSize(file.getSize() + "");
//            fileInfo.setType(type);
//            fileInfo.setSuffix(suffix);
//            fileInfo.setMd5(fileMd5);
//            fileInfo.setUrl(url);
//            fileInfoDao.save(fileInfo);
//            listUpload.add(fileInfo);
//        }
//        log.info("listUpload : {}", JSON.toJSONString(listUpload));
//        return SRS.bySuccess(listUpload);
//    }
//
//    @Autowired
//    private FastFileStorageClient storageClient;
//
//    @Override
//    public SRS uploadFile2(MultipartFile[] files) throws Exception {
//        String fastdfs_server = DictCache.strVal("fastdfs_server");
//
//
//        if (files == null || files.length == 0) {
//            return SRS.bySuccess();
//        }
//
//        //检查文件大小
//        for (MultipartFile file : files) {
//            long size = file.getSize();
//            String type = FileKit.getType(file.getOriginalFilename());//文件类型
//            if ("image".equals(type)) {
//                Long upload_image_max_size = DictCache.longVal("upload_image_max_size", 1048576L);
//                if (size > upload_image_max_size) {
//                    throw new MiException(ResMsg.ERROR_IMAGE_FILE_MAX);
//                }
//            }
//            if ("video".equals(type)) {
//                Long upload_video_max_size = DictCache.longVal("upload_video_max_size", 52428800L);
//                if (size > upload_video_max_size) {
//                    throw new MiException(ResMsg.ERROR_VIDEO_FILE_MAX);
//                }
//            }
//        }
//
//        //    开始上传
//        ArrayList<FileInfo> listUpload = new ArrayList<>();
//        for (MultipartFile file : files) {
//            //原始文件名（有后缀）
//            String originalFilename = file.getOriginalFilename();
//            //文件后缀（没有点）
//            String suffix = FileKit.getSuffix(originalFilename);
//            String fileMd5 = FileKit.getFileMd5(file); //文件 MD5
//            String fileName = fileMd5 + "." + suffix;
//            String type = FileKit.getType(originalFilename);//文件类型
//
//            //上传文件
//            StorePath group1 = storageClient.uploadFile("group1", file.getInputStream(), file.getSize(), suffix);
//            String path = group1.getPath();
//            String fullPath = group1.getFullPath();
//            String group = group1.getGroup();
//
//            //
//            FileInfo fileInfo = new FileInfo();
//            fileInfo.setId(nextId());
//            fileInfo.setName(originalFilename);
//            fileInfo.setSize(file.getSize() + "");
//            fileInfo.setType(type);
//            fileInfo.setSuffix(suffix);
//            fileInfo.setMd5(fileMd5);
//            fileInfo.setFilePath(path);
////            fileInfo.setFileFullPath(fullPath);
////            fileInfo.setFileGroup(group);
//            fileInfo.setUrl(fullPath);
//            fileInfo.setMd5(fileMd5);
//            fileInfo.setFullUrl(fastdfs_server + "/" + fullPath);
//            fileInfoDao.save(fileInfo);
//            listUpload.add(fileInfo);
//        }
//        log.info("listUpload : {}", JSON.toJSONString(listUpload));
//        return SRS.bySuccess(listUpload);
//    }
//
//
//    @Override
//    public FileInfo upload(MultipartFile file) throws Exception {
//        String fileServerType = EnvKit.fileServerType();
//        //阿里云OOS
//        if (FileServerType.AliYun.value().equals(fileServerType)) {
//        }
//        //
//
//
//        return null;
//    }
//}
